/*
 * @lc app=leetcode.cn id=219 lang=javascript
 *
 * [219] 存在重复元素 II
 */

// @lc code=start
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {boolean}
 */
// 滑动窗口
// 以k为长度的滑动窗口,如果窗口内有重复值则满足
var containsNearbyDuplicate = function(nums, k) {
  let set = new Set()
  for (let i = 0; i < nums.length; i++) {
    const item = nums[i];
    if (i > k) {
      set.delete(nums[i - k - 1])
    }
    if (set.has(item)) return true

    set.add(item)
  }
  return false
}
// @lc code=end
// hash表
// var containsNearbyDuplicate = function(nums, k) {
//   let map = new Map()
//   for (let i = 0; i < nums.length; i++) {
//     const item = nums[i];
//     const m = map.get(item)
//     if (m !== undefined) {
//       if (Math.abs(m - i) <= k) return true
//     }
//     map.set(item, m)
//   }
//   return false
// };